﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FormatTime</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/commands.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" type="text/css" media="print">
<style type="text/css">
<!--
.red {color: #FF0000}
-->
</style>
</head> <body> <h1>FormatTime</h1>  <p>转换 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a> 时间戳到指定的日期/时间格式.</p> <p class="CommandSyntax">FormatTime, OutputVar [, <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a>, Format]</p> <h3>参数</h3> <table border="1" width="100%" cellspacing="0" cellpadding="3"> <tr> <td>OutputVar</td> <td>用于保存结果的变量名称.</td> </tr> <tr> <td>YYYYMMDD...</td> <td>此参数留空,则使用当前的本地日期和时间. 否则, 请指定 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a> 格式的时间戳中所有或主要的部分. 如果时间戳中日期和/或时间部分是无效的 -- 例如平年的二月29日 -- 在 <em>OutputVar</em> 中日期和/或时间将被忽略. 尽管仅支持 1601 到 9999 年份, 早于1601年的时间戳仍然可以生成格式化的时间, 不过仅有其中的时间部分有效.</td> </tr> <tr> <td width="15%">Format</td> <td width="85%"><p>如果省略, 默认格式为长日期后接着时间, 它们都将根据当前用户区域设置进行格式化. 例如: 4:55 PM Saturday, November 27, 2004</p> <p>否则, 请指定下面的一个或多个日期-时间格式, 以及任何原义的空格和标点符号 (逗号不需要转义; 它们可以正常使用). 在后面的例子中, 请注意 M 必须为大写: M/d/yyyy h:mm tt</p></td> </tr> </table> <h3>日期格式 <span class="red">(区分大小写)</span></h3> <table border="1" width="100%" cellspacing="0" cellpadding="3"> <tr> <td>d</td> <td>不含前导零的天数 (1 - 31)</td> </tr> <tr> <td>dd</td> <td>含前导零的天数 (01 – 31)</td> </tr> <tr> <td width="15%">ddd</td> <td width="85%">在当前的用户语言里星期几的简称 (例如 Monday)</td> </tr> <tr> <td>dddd</td> <td>在当前的用户语言里星期几的全称 (例如 Monday)</td> </tr> <tr> <td>M</td> <td>含前导零的月份 (1 – 12)</td> </tr> <tr> <td>MM</td> <td>含前导零的月份 (01 – 12)</td> </tr> <tr> <td>MMM</td> <td>在当前的用户语言里月份的简称 (例如 Jan)</td> </tr> <tr> <td>MMMM</td> <td>在当前的用户语言里月份的全称 (例如 January)</td> </tr> <tr> <td>y</td> <td>不含世纪的年份, 不含前导零 (0 – 99)</td> </tr> <tr> <td>yy</td> <td>不含世纪的年份, 含前导零 (00 - 99)</td> </tr> <tr> <td>yyyy</td> <td>含世纪的年份. 例如: 2005</td> </tr> <tr> <td>gg</td> <td>当前用户区域设置的时代/纪元字符串(如果没有则为空)</td> </tr> </table> <h3>时间格式 <span class="red">(区分大小写)</span></h3> <table border="1" width="100%" cellspacing="0" cellpadding="3"> <tr> <td>h</td> <td>不含前导零的小时数; 十二小时制格式 (1 - 12)</td> </tr> <tr> <td>hh</td> <td>含前导零的小时数; 十二小时制格式 (01 – 12)</td> </tr> <tr> <td width="15%">H</td> <td width="85%">不含前导零的小时数; 二十四小时制格式 (0 - 23)</td> </tr> <tr> <td>HH</td> <td>含前导零的小时数; 二十四小时制格式 (00– 23)</td> </tr> <tr> <td>m</td> <td>不含前导零的分钟数 (0 – 59)</td> </tr> <tr> <td>mm</td> <td>含前导零的分钟数 (00 – 59)</td> </tr> <tr> <td>s</td> <td>不含前导零的秒数 (0 – 59)</td> </tr> <tr> <td>ss</td> <td>含前导零的秒数 (00 – 59)</td> </tr> <tr> <td>t</td> <td>单字符时间标记, 例如 A 或 P (取决于区域设置)</td> </tr> <tr> <td>tt</td> <td>多字符时间标记, 例如 AM 或 PM (取决于区域设置)</td> </tr> </table> <h3>下列格式必须 <span class="red">单独</span> 使用; 即在 <em>Format</em> 参数中不能含有其他格式或文本. 这些格式不区分大小写.</h3> <table border="1" width="100%" cellspacing="0" cellpadding="3"> <tr> <td>(Blank)</td> <td>留空 <em>Format</em> 参数则生成长日期后跟着时间. 例如, 在某些区域设置中它可能看起来像这样 4:55 PM Saturday, November 27, 2004</td> </tr> <tr> <td>Time</td> <td>当前用户区域设置的时间表示, 例如 5:26 PM</td> </tr> <tr> <td width="15%">ShortDate</td> <td width="85%">当前用户区域设置的短日期表示, 例如 02/29/04</td> </tr> <tr> <td>LongDate</td> <td>当前用户区域设置的长日期表示, 例如 Friday, April 23, 2004</td> </tr> <tr> <td>YearMonth</td> <td>当前用户区域设置的年份和月份格式, 例如 February, 2004 </td> </tr> <tr> <td>YDay</td> <td>不含前导零的年份的天数 (1 – 366)</td> </tr> <tr> <td>YDay0</td> <td>含前导零的年份的天数 (001 – 366)</td> </tr> <tr> <td>WDay</td> <td>星期的天数 (1 – 7). 星期日为 1.</td> </tr> <tr> <td>YWeek</td> <td>ISO 8601 中规定的完全年份和周数. 例如: 200453. 如果新年里的含有1月1日的星期含有四天或更多, 那么它被称为是第一星期. 否则, 它是前一年的最后一周, 并且下一周才是新年的第一周. 因此, 1月4日和1月的首个星期四总是在第一周.</td> </tr> </table> <h3>附加选项</h3> <p>下列选项可以紧跟在 <em>YYYYMMDDHH24MISS</em> 格式的时间戳参数后 (如果没有时间戳, 它们也可以单独使用). 在下面的例子中, 请注意最后的四项间没有逗号:</p> <pre>FormatTime, OutputVar, 20040228 LSys D1 D4</pre> <p><strong>R</strong>: 与上述功能相反. 让日期在时间之前 (仅当 <em>Format</em> 为空时才有意义).</p> <p><strong>Ln</strong>: 如果此选项 <em>不</em> 存在, 则使用当前用户区域设置来格式化字符串. 要使用系统的区域设置, 请指定 LSys. 要使用特定的区域设置, 请指定字母 L 后面跟着十六进制或十进制的区域设置标识符 (LCID). 关于如何构建 LCID 的信息, 请在 <a href="http://www.microsoft.com">www.microsoft.com</a> 上搜索下列短语: Locale Identifiers</p> <p><strong>Dn</strong>: 日期选项. 请指定 <strong>n</strong> 为下列数字的其中一个:<br> 0: 强制使用默认选项. 这也使得短日期生效. <br> 1: 使用短日期 (仅当 <em>Format</em> 为空时才有意义; 与 2 和 8 不兼容).<br> 2: 使用长日期 (仅当 <em>Format</em> 为空时才有意义; 与 1 和 8 不兼容).<br> 4: 使用备用日历Use alternate calendar (如果有).<br> 8: 使用年份-月份格式 (仅当 <em>Format</em> 为空时才有意义; 与 1 和 2 不兼容). 需要Windows 2000或更高版本的系统.<br> 0x10: 为从左到右的阅读顺序布局添加标记. 仅在 Windows 2000 或更高版本的系统上才有效.<br> 0x20: 为从右到左的阅读顺序布局添加标记. 仅在 Windows 2000 或更高版本的系统上才有效.<br> 0x80000000: Do not obey any overrides the user may have in effect for the system&#39;s default date format. <br> 0x40000000: 使用系统 ANSI 代码页而不是区域设置代码页进行字符串转换.</p> <p><strong>Tn</strong>: 时间选项. 请指定 <strong>n</strong> 为下列数字的其中一个:<br>0: 强制使用默认选项.这也使得分钟数和秒数被显示.<br> 1: 省略分钟数和秒数.<br> 2: 省略秒数. <br> 4: 省略时间标记 (例如 AM/PM).<br> 8: 始终使用二十四小时制而不是十二小时制.<br> 12: 上面两种参数的组合.<br>0x80000000: Do not obey any overrides the user may have in effect for the system&#39;s default time format. <br>0x40000000: 使用系统 ANSI 代码页而不是区域设置代码页进行字符串转换.</p> <p><strong>请注意</strong>: Dn 和 Tn 参数可以重复多次以使多个选项生效, 例如: FormatTime, OutputVar, 20040228 D2 D4 T1 T8</p> <h3>备注</h3> <p>从 <em>Format</em> 到 <em>OutputVar</em> 的转录时, 你希望原义转录的字母和数字必须包含在单引号中, 例如: &#39;Date:&#39; MM/dd/yy &#39;Time:&#39; hh:mm:ss tt</p> <p>相比之下, 非字母数字字符, 例如空格,制表符,换行符 (`n), 斜杠,冒号,逗号和其他标点不需要包围在单引号中. 例外情况是单引号字符本身: 要产生原义的单引号, 请使用四个连续的单引号 (&#39;&#39;&#39;&#39;), 或仅使用两个引号如果它们已经包含在外部的一对引号中.</p> <p>如果 <em>Format</em> 参数中同时包含日期和时间元素, 它们不能混用. 换句话说, 此字符串应该可分成两半: 一半时间,一半日期. 例如, 一个包含 &quot;hh yyyy mm&quot; 的格式字符串不会产生期望的结果, 因为它在两个时间元素间包含日期元素.</p> <p> 当 <em>Format</em> 参数中包含数值的天数 (d 或 dd) 跟着月份的全称 (MMMM), 则使用月份名称的所有格形式 (如果当前语言有所有格形式的话).</p> <p>如果 <em>Format</em> 包含超过 2000 个字符, <em>OutputVar</em> 将被置空.</p> <p>相关提示, 日期和时间的加减可以使用 <a href="EnvAdd.htm">EnvAdd</a> 和 <a href="EnvSub.htm">EnvSub</a> 命令进行.</p> <h3>相关</h3> <p>要进行反向的转换 -- 即 <em>从</em> 一个格式化的日期/时间 <em>转到</em> <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a> 格式 -- 请参阅 <a href="http://www.autohotkey.com/forum/topic20405.html">www.autohotkey.com/forum/topic20405.html</a></p> <p>请参考: <a href="GuiControls.htm#DateTime">Gui DateTime control</a>, <a href="SetFormat.htm">SetFormat</a>, <a href="Transform.htm">Transform</a>, <a href="../Variables.htm#date">内置的日期和时间变量</a>, <a href="FileGetTime.htm">FileGetTime</a> </p> <h3>示例</h3> <pre class="NoIndent">FormatTime, TimeString
MsgBox The current time and date (time first) is %TimeString%.

FormatTime, TimeString, R
MsgBox The current time and date (date first) is %TimeString%.

FormatTime, TimeString,, Time
MsgBox The current time is %TimeString%.

FormatTime, TimeString, T12, Time
MsgBox The current 24-hour time is %TimeString%.

FormatTime, TimeString,, LongDate
MsgBox The current date (long format) is %TimeString%.

FormatTime, TimeString, 20050423220133, dddd MMMM d, yyyy hh:mm:ss tt
MsgBox The specified date and time, when formatted, is %TimeString%.

FormatTime, TimeString, 200504, &#39;Month Name&#39;: MMMM`n&#39;Day Name&#39;: dddd
MsgBox %TimeString%

FormatTime, YearWeek, 20050101, YWeek
MsgBox January 1st of 2005 is in the following ISO year and week number: %YearWeek%</pre> <p>?</p> <pre class="NoIndent"><em>; Change the date-time stamp of a file:</em>
FileSelectFile, FileName, 3,, Pick a file
if FileName =  <em>; The user didn&#39;t pick a file.</em>
    return
FileGetTime, FileTime, %FileName%
FormatTime, FileTime, %FileTime%   <em>; Since the last parameter is omitted, the long date and time are retrieved.</em>
MsgBox The selected file was last modified at %FileTime%.</pre> <p>?</p> <pre class="NoIndent"><em>; The following function converts the specified number of seconds into the corresponding</em>
<em>; number of hours, minutes, and seconds (hh:mm:ss format).</em>

MsgBox % FormatSeconds(7384)  <em>; 7384 = 2 hours + 3 minutes + 4 seconds. </em><em>It yields: 2:03:04</em>

FormatSeconds(NumberOfSeconds)  <em>; Convert the specified number of seconds to hh:mm:ss format.</em>
{
    time = 19990101  <em>; *Midnight* of an arbitrary date.</em>
    time += %NumberOfSeconds%, seconds
    FormatTime, mmss, %time%, mm:ss
    return NumberOfSeconds//3600 &quot;:&quot; mmss  <em>; This method is used to support more than 24 hours worth of sections.</em>
}</pre> </body> </html>